Typically, with program controlled robot arms, coordinate data defining the desired position and orientation of a function element on the end of a robot arm is determined during a teaching or programming mode of operation. In most applications, the relationship between the workpiece and the robot arm is relatively constant and does not change between the teaching and automatic modes. Therefore, in replaying the taught program during the automatic mode, the programmed coordinate data is capable of positioning the function element to an acceptable degree of accuracy.
However, there are applications where the relationship between the workpiece and the robot arm cannot be accurately defined during the teaching operation. Typically, the teaching operation occur by commanding the robot arm along predetermined axes of motion until the function element achieves its desired position and orientation in space. The coordinate data defining this desired position and orientation is then stored in a memory with associated process function information as part of the program. In contrast, other teaching techniques, e.g. an offline teaching technique, allows the program to be defined off-line or outside the operating environment. In this situation, the operating environment is modeled at a remote location; and a programmer defines a program of desired function element positions and orientations which together with process function information comprise the cycle of operation. The program is transferred to the robot control; aligned to the operating environment and executed. Unfortunately, there are a number of mechanical and electronic variables within the robot system which affect its positioning accuracy, i.e. its ability to absolutely locate a position in space in response to input data theoretically defining that position. For example, mechanical droop or sag will cause the actual vertical position to deviate from the desired vertical position defined by the programmed coordinate data. These variables are not a problem when teaching a program in the operating environment because the programmer can visually locate the desired positions.
The claimed invention may be utilized to compensate for the variables in the robot system which adversely affect the positioning accuracy of an off-line taught program. In an initial cycle of operation, the robot arm is moved to each programmed position; and at preselected positions, an adjust function cycle compares the actual position to the programmed position. If the difference exceeds a predetermined tolerance, the programmed coordinates are redefined to cause the robot arm to move to the desired position.
The invention may be utilized in other applications where the absoklute location of successive workpieces may change with each iteration of a programmed cycle of operation. Consequently, there is a need for a mechanism for adjusting the position of the function element from its programmed location. In this situation, the function element is moved to a first position relative to the workpiece; and an external apparatus determines the accuracy of the function element location relative to the workpiece. If the actual position is in error, the desired position coordinates are transferred to the robot control; and the function element is moved to the desired location. Thereafter, the remainder of the program is executed.
In other situations, the desired position and orientation may be checked at several stages during the cycle of operation, and an adjustment may be made from the programmed position and orientation.
It will be apparent to those who are skilled in the art that the claimed invention has further utilization. Through a series of adjust positioning moves, the adjustment capability may cause the robot arm to be very accurately positioned to a degree not possible using the programmed coordinate data alone.
Therefore, an object of the invention is to provide an apparatus for positioning the function element to a programmed position and orientation and permitting further coordinate data to be transferred to the robot control to adjust the function element to a desired nonprogrammed location and orientation. Thereafter, a further adjustment may be made, or the program may be continued.
According to a further object, the coordinate data defining the adjusted position and orientation may be used only once or may be substituted for the programmed coordinate data thereby causing the function element to move to the adjusted position and orientation during subsequent executions of the program.